Client-server based interactive television guide with server recording

ABSTRACT

An interactive television program guide system is provided. An interactive television program guide provides users with an opportunity to select programs for recording on a remote media server. Programs may also be recorded on a local media server. The program guide provides users with VCR-like control over programs that are played back from the media servers and over real-time cached copies of the programs. The program guide also provides users with an opportunity to designate gift recipients for whom programs may be recorded.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation application of U.S. patentapplication Ser. No. 09/332,244, filed Jun. 11, 1999, which claims thebenefit of U.S. Provisional Patent Application No. 60/092,807, filedJul. 14, 1998.

BACKGROUND OF THE INVENTION

This invention relates to interactive television program guide systems,and more particularly, to interactive television program guide systemsthat allow users to record programs and program guide data on a mediaserver.

Cable, satellite, and broadcast television systems provide viewers witha large number of television channels. Viewers have traditionallyconsulted printed television program schedules to determine the programsbeing broadcast at a particular time. More recently, interactivetelevision program guides have been developed that allow televisionprogram information to be displayed on a user's television. Interactivetelevision program guides allow the user to navigate through televisionprogram listings using a remote control. In a typical program guide,various groups of television program listings are displayed inpredefined or user-defined categories. Listings are typically displayedin a list, grid, or table.

Program listings and other program guide data are typically provided bya satellite uplink facility to a number of cable system headends. Eachheadend distributes the program guide data to a number of users.Interactive television program guides are typically implemented on theusers' set-top boxes. A typical set-top box is connected to a user'stelevision and videocassette recorder. Program guide systems that allowusers to record programs are described, for example, in Ellis et al.U.S. patent application Ser. No. 08/924,239, filed Sep. 5, 1997, whichis hereby incorporated by reference herein in its entirety.

Such systems are deficient in a number of respects. The processing andstorage capabilities of the set-top box and videocassette recorder aregenerally limited. This, in turn, may limit the functionality of theguide. Videocassette recorders may add significantly to the cost ofin-home television equipment. They are mechanical systems, prone tofailure, and their proper operation relies in part on users setting themproperly (i.e., remembering to put a tape in). Setting up a VCR to workcooperatively with a program guide may be a complex process in somesystems and may frustrate users. In addition, users cannot recordmultiple programs simultaneously without having multiple VCRs, andrecording one program while watching another typically requiresadditional hardware or an enhanced set-top box. Systems in which programguides allow users to record one program while watching another aredescribed, for example, in Lemmons et al. U.S. Provisional PatentApplication No. 60/089,487, filed Jun. 16, 1998 which is herebyincorporated by reference herein in its entirety.

Systems that use hard disk technology to store programs have also beendeveloped. Interactive television program guide systems that havedigital storage devices are described, for example, in Hassell et al.U.S. patent application Ser. No. 09/157,256, filed Sep. 17, 1998.Hard-disk based products have also been developed by TiVo, Inc. ofSunnyvale, Calif., and Replay Networks, Inc. of Mountain View, Calif.These systems are deficient in that they require additional hardware inthe user's home that may significantly increase the cost of the user'shome television equipment. Such systems also do not allow users torecord multiple programs simultaneously without having multiple devicesin the home.

Some current television platforms support a return path between theset-top boxes and the headends. Client-server based program guides havebeen developed in which set-top boxes act as clients that communicatewith servers located at headends via return paths. The servers typicallyprovide program listings information (e.g., program titles and broadcasttimes) to the set-top boxes in response to requests that are generatedby the set-top boxes.

Video-on-demand (VOD) systems have also been developed. Such systemstypically record all programs that are distributed by a headend, or onlya chosen subset of programs. In the former approach, vast amounts ofstorage is required at the server to ensure that all possible videosdesired by users will be available. In the latter approach, users arelimited to viewing only those programs that the headend operator decidedto record.

In one cable television system known as “The Box,” viewers can call acable operator to request the airing of a particular music video from anarchive of music videos. The requested videos are broadcast on adedicated channel for all viewers to see. This approach suffers from anumber of deficiencies. First, users do not have the convenience ofordering programs using their television equipment. In addition, viewersmust wait for the airing of other viewers' selections before theirs areaired. Also, viewers are limited to selecting videos from only thosearchived. Some viewers may desire music videos that are not shared inthe archive. These viewers have no way of selecting a video forarchiving or viewing other videos.

In a cable television system known as “Your Choice TV,” televisionprograms that have previously aired are repeated on a dedicated set oftelevision channels. Viewers may order a repeat of a program for a smallfee. However, the repeats are aired at scheduled times, which may not beconvenient for the viewer. Also, desired programs may not be availableto viewers because the cable system operator decides which programs torecord.

It is therefore an object of the present invention to provide a programguide system that allows users to direct a server to record certainprograms that later may be played back to the user on demand.

SUMMARY OF THE INVENTION

This and other objects of the present invention are accomplished inaccordance with the principles of the present invention by providing aprogram guide system that records programs at a remote media server inresponse to user requests. A main facility provides program guide datato a number of television distribution facilities. The televisiondistribution facilities distribute the program guide data to a number ofinteractive television program guides using any suitable approach (e.g.,continuously, periodically, in response to requests or commands, etc.)The interactive television program guides may be implemented wholly onthe users' television equipment. Alternatively, the program guides maybe implemented partially on the users' television equipment andpartially implemented on a server using a suitable client-server basedor distributed approach.

The remote media server may be located at a program guide distributionfacility or other suitable distribution facility (e.g., a cable systemheadend, a broadcast distribution facility, a satellite televisiondistribution facility, or any other suitable type of televisiondistribution facility). The remote media server may record programs and,if desired, program guide data. The remote media server may also recorddata associated with programs, such as data carried in a verticalblanking interval (VBI) or in a digital data track. The programs,program associated data, program guide data or any suitable combinationthereof, may be recorded in response to requests generated by theinteractive television program guide. Programs recorded by the remotemedia server may be distributed to users using any suitablevideo-on-demand or near-video-on-demand approach. Users may also havelocal media servers (e.g., personal computers) in their homes forrecording programs and, if desired, program guide data.

Further features of the invention, its nature and various advantageswill be more apparent from the accompanying drawings and the followingdetailed description of the preferred embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic block diagram of an illustrative system inaccordance with the present invention.

FIGS. 2 a-2 e are schematic diagrams showing illustrative arrangementsfor the interactive program guide equipment of FIG. 1 in accordance withthe present invention.

FIG. 3 is a schematic diagram showing an illustrative arrangement forthe storage of FIGS. 2 a-2 e in accordance with the present invention.

FIG. 4 is a schematic diagram showing an illustrative arrangement ofmedia directories maintained by the storage devices of FIG. 3.

FIG. 5 is an illustrative data flow diagram showing how programs may berecorded.

FIGS. 6 a and 6 b are diagrams illustrating the use of user pointers toplay back a single program for multiple users in accordance with thepresent invention.

FIG. 7 is a schematic block diagram of an illustrative arrangement forthe user television equipment of FIGS. 2 a-2 e in accordance with thepresent invention.

FIG. 8 shows an illustrative arrangement for the remote control of FIG.7 in accordance with the present invention.

FIG. 9 is a generalized schematic block diagram of portions of theillustrative user television equipment of FIG. 7 in accordance with thepresent invention.

FIG. 10 shows an illustrative main menu screen that may be displayed bythe program guide to provide users with access to various program guidefunctions in accordance with the present invention.

FIG. 11 a shows an illustrative program listings screen in which programlistings are displayed by time in accordance with the present invention.

FIG. 11 b shows an illustrative program listings screen in which programlistings are displayed by channel in accordance with the presentinvention.

FIG. 11 c shows an illustrative program listings screen in which programlistings are displayed by category in accordance with the presentinvention.

FIGS. 12 a and 12 b show illustrative program guide display screens inwhich pay-per-view program listings are displayed in accordance with thepresent invention.

FIG. 13 a shows an illustrative FLIP display that may be displayed bythe program guide when a user changes channels in accordance with thepresent invention.

FIG. 13 b shows an illustrative BROWSE display that the program guidemay display when a user indicates a desire to browse through programlistings for channels other than the one that a user is watching inaccordance with the present invention.

FIG. 14 a shows an illustrative record overlay that may be displayed bythe program guide when a user indicates a desire to record the programin accordance with the present invention.

FIG. 14 b shows an illustrative record overlay that may be displayed bythe program guide while a user is in a program guide display screen. Theoverlay may be displayed when a user indicates a desire to record aprogram.

FIG. 14 c and 14 d show illustrative record overlays that indicate acharge for recording a program and that provide a user with anopportunity to confirm the record.

FIG. 14 e shows an illustrative overlay that the program guide maydisplay when a user indicates a desire to record a program that is partof a program grouping.

FIG. 15 a shows an illustrative pay-per-view ordering overlay.

FIG. 15 b shows an illustrative pay-per-view order confirmation overlay.

FIG. 16 shows an illustrative record overlay that the program guide maydisplay when a user selects a program for recording that is copyprotected.

FIG. 17 shows an illustrative program guide display screen for providinga user with an opportunity to order a pay-per-view program package.

FIG. 18 a shows an illustrative directory overlay that may be displayedby the program guide while a user is watching television. The overlaymay be displayed when a user indicates a desire to view a directory ofprograms that have been recorded for a user on the remote media serverof FIGS. 2 a-2 e or the local media server of FIG. 7.

FIG. 18 b shows an illustrative directory overlay that may be displayedby the program guide while a user is in a program guide display screen.The overlay may be displayed when a user indicates a desire to see adirectory of programs that have been recorded for a user on the remotemedia server of FIGS. 2 a-2 e or the local media server of FIG. 7.

FIG. 18 c shows an illustrative directory overlay that may be displayedby the program guide while a user is in a display screen in whichlistings are displayed by category in accordance with the presentinvention.

FIG. 18 d shows an illustrative directory screen that may be displayedby the program guide when a user indicates a desire to access adirectory of programs recorded for a user on the remote media server ofFIGS. 2 a-2 e or the local media server of FIG. 7.

FIG. 18 e shows an illustrative directory menu screen that the programguide may display when a user indicates a desire to access variousdirectory screens, such as that shown in FIG. 14 d, but in whichrecorded program listings are sorted in various ways.

FIG. 18 f shows an illustrative directory screen of programs that a userhas selected for recording by a media server but that have not yet beenrecorded.

FIG. 19 shows an illustrative overlay that the program guide may displaywhen a user indicates a desire to play back a program. The overlayindicates a charge for the playback.

FIG. 20 is an illustrative full information screen that may be displayedby the program guide when a user indicates a desire to see informationon a program that has been recorded for a user on the remote mediaserver of FIGS. 2 a-2 e.

FIG. 21 shows an illustrative overlay that the program guide may displaywhen a user indicates a desire to record or play back a program that isparentally locked.

FIG. 22 shows an illustrative overlay for providing users with controlof a program recorded on the remote media server of FIGS. 2 a-2 e or thelocal media server of FIG. 7.

FIG. 23 shows an illustrative overlay that the program guide may displaywhen a user indicates a desire to real-time cache a program on theremote media server of FIGS. 2 a-2 e or the local media server of FIG.7.

FIG. 24 shows an illustrative setup screen in which a user may setvarious settings for recording programs on or playing programs backprograms from the remote media server of FIGS. 2 a-2 e or the localmedia server of FIG. 7.

FIGS. 25 a and 25 b are illustrative super-program screens for providingusers with an opportunity to define super-programs in accordance withthe present invention.

FIG. 26 is a flowchart of an illustrative overview of steps involved inrecording programs and associated program guide data on the remote mediaserver of FIGS. 2 a-2 e or the local media server of FIG. 7 inaccordance with the present invention.

FIG. 27 is a somewhat more detailed flowchart of illustrative stepsinvolved in recording programs and associated program guide data on theremote media server of FIGS. 2 a-2 e or the local media server of FIG. 7in accordance with the present invention.

FIG. 28 is a flowchart of an illustrative overview of steps involved inplaying back programs and associated program guide data from the remotemedia server of FIGS. 2 a-2 e or the local media server of FIG. 7 inaccordance with the present invention.

FIG. 29 is a somewhat more detailed flowchart of illustrative stepsinvolved in playing back programs and associated program guide data fromthe remote media server of FIGS. 2 a-2 e or the local media server ofFIG. 7 in accordance with the present invention.

FIG. 30 is a flowchart of illustrative steps involved in providing auser with access to real-time cached copies of programs in accordancewith the present invention.

FIG. 31 is a flowchart of illustrative steps involved in providing auser with the opportunity to define and play back super-programs inaccordance with the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

An illustrative system 10 in accordance with the principles of thepresent invention is shown in FIG. 1. Main facility 12 provides programguide data from program guide data source 14 to interactive programguide television equipment 17 via communications link 18. There arepreferably numerous pieces or installations of interactive program guidetelevision equipment 17, each linked to main facility 12 by a respectivecommunications link 18 although only one such piece or installation ofinteractive program guide television equipment 17 is shown in FIG. 1 toavoid overcomplicating the drawing.

Link 18 may be a satellite link, a telephone network link, a cable orfiber optic link, a microwave link, an Internet link, a combination ofsuch links, or any other suitable communications link. If it is desiredto transmit video signals over link 18 in addition to data signals, arelatively high bandwidth link such as a satellite link may generally bepreferred to a relatively low bandwidth link such as a telephone line.

The program guide data transmitted by main facility 12 to interactiveprogram guide television equipment 17 may include television programmingdata (e.g., program identifiers, times, channels, titles, anddescriptions) and other data for services other than television programlistings (e.g., help text, pay-per-view information, weatherinformation, sports information, music channel information, associatedInternet web links, associated software, etc.). The program guide datamay also include unique identifiers for each showing of each program,identifiers for program groupings (e.g., series, mini-series, orderablepackages of programs, etc.), or any other suitable identifier. As usedherein television “program” and “programming” are intended to mean anytype of show or advertisement carried on a regular, premium,pay-per-view, music, or other type of television channel, and mayinclude movies, pay-per-view programs, sporting events, music programs,commercials and any other suitable type of television program.Interactive program guide television equipment 17 may be connected tobilling system 199 via communications link 197. Communications link 197may be any suitable communications link, such as a serial connection,parallel connection, universal serial bus (USB) connection, a telephonelink, computer network link, Internet link, or any other suitablecommunications link. Billing system 199 receives information frominteractive program guide television equipment 17 regarding programsthat are ordered, recorded, or played back on interactive program guidetelevision equipment 17. Billing system 199 may be any computer basedsystem suitable for generating bills for users or crediting and debitingaccounts of users based on the information received from interactiveprogram guide television equipment 17.

An interactive television program guide is implemented on interactiveprogram guide television equipment 17. Five illustrative arrangementsfor interactive program guide television equipment 17 are shown in FIGS.2 a-2 e. As shown, interactive program guide television equipment 17 mayinclude program guide distribution equipment 21 located at program guidedistribution facility 16, and user television equipment 22.

The interactive television program guide may run totally on usertelevision equipment 22 using the arrangements of FIGS. 2 a and 2 c, ormay run partially on user television equipment 22 and partially oninteractive program guide television equipment 17 using a suitableclient-server or distributed processing arrangement such as those shownin FIGS. 2 b and 2 d. Program guide distribution facility 16 may be anysuitable distribution facility, and may have distribution equipment 21.

Distribution equipment 21 of FIGS. 2 a, 2 b, 2 c, and 2 d is equipmentsuitable for providing program guide data to user television equipment22 over communications path 20. Distribution equipment 21 may include,for example, suitable transmission hardware for distributing programguide data on a television channel sideband, in the vertical blankinginterval of a television channel, using an in-band digital signal, usingan out-of-band digital signal, or by any other suitable datatransmission technique. Analog or digital video signals (e.g.,television programs) may also be distributed by distribution equipment21 to user television equipment 22 over communications paths 20 onmultiple television channels. Alternatively, videos may be distributedto user television equipment 22 from some other suitable distributionfacility, such as a cable system headend, a broadcast distributionfacility, a satellite television distribution facility, or any othersuitable type of television distribution facility.

Communications paths 20 may be any communications paths suitable fordistributing program guide data. Communications paths 20 may include,for example, a satellite link, a telephone network link, a cable orfiber optic link, a microwave link, an Internet link, a data-over-cableservice interface specification (DOCSIS) link, a combination of suchlinks, or any other suitable communications link. Communications paths20 preferably have sufficient bandwidth to allow program guidedistribution facility 16 or another distribution facility to distributetelevision programming to user television equipment 22. There aretypically multiple pieces of user television equipment 22 and multipleassociated communications paths 20, although only one piece of usertelevision equipment 22 and communications path 20 are shown in FIGS. 2a-2 d to avoid overcomplicating the drawings. If desired, televisionprogramming and program guide data may be provided over separatecommunications paths.

FIG. 2 b shows an illustrative arrangement for interactive program guidetelevision equipment 17 in a client-server based or distributedinteractive program guide system. As shown in FIG. 2 b, distributionequipment 21 may include program guide server 25. Program guide server25 may use any suitable combination of hardware and software to providea client-server based program guide. Program guide server 25 may, forexample, run a suitable database engine (e.g., SQL Server by Microsoft)and provide program guide data in response to queries generated by aprogram guide client implemented on user television equipment 22. Ifdesired, program guide server 25 may be located at main facility 12, orother location, such as a cable system headend, a broadcast distributionfacility, a satellite television distribution facility, or any othersuitable type of television distribution facility.

The program guide may retrieve program guide data from program guideserver 25 using any suitable client-server based approach. The programguide may, for example, pass SQL requests as messages to program guideserver 25. In another suitable approach, the program guide may invokeremote procedures that reside on program guide server 25 using one ormore remote procedure calls. Program guide server 25 may execute SQLstatements for such invoked remote procedures. In still another suitableapproach, client objects executed by the program guide may communicatewith server objects executed by program guide server 25 using, forexample, an object request broker (ORB). This may involve using, forexample, Microsoft's Distributed Component Object Model (DCOM) approach.

The program guide implemented on interactive program guide televisionequipment 17 may communicate with program guide server 25 overcommunications path 20 using any suitable network and transport layerprotocols, if desired. They may communicate, for example, using aprotocol stack which includes Sequenced Packet Exchange/InternetworkPacket Exchange (SPX/IPX) layers, Transmission Control Protocol/InternetProtocol (TCP/IP) layers, Appletalk Transaction Protocol/DatagramDelivery Protocol (ATP/DDP) layers, DOCSIS or any other suitable networkand transport layer protocols.

FIGS. 2 c and 2 d show illustrative Internet based interactivetelevision program guide systems. Television distribution facility 16may, for example, include Internet service system 61. Internet servicesystem 61 may use any suitable combination of hardware and softwarecapable of providing program guide data to the guide using an Internetbased approach (e.g., the HyperText Transfer Protocol (HTTP)). Ifdesired, Internet service system 61 may be located at a facility that isseparate from program guide distribution facility 16.

If the program guide is implemented on user television equipment 22 ofinteractive program guide television equipment 17 as shown in FIG. 2 c,Internet service system 61 (or other suitable equipment at program guidedistribution facility 16 that is connected to Internet service system61) may provide program guide data to user television equipment 22 viathe internet, or via program guide distribution equipment 21 using anysuitable Internet-based approach (e.g., using the HyperText TransferProtocol (HTTP) over a Transmission Control Protocol/Internet Protocol(TCP/IP) type link). If the program guide implemented on interactiveprogram guide television equipment 17 is a client-server guide as shownin FIG. 2 d, program guide server 25 may obtain program guide data fromInternet service system 61. The program guide may also, however, obtainprogram guide data from Internet service system 61 via an Internetconnection.

In another suitable arrangement, distribution equipment 21 may includecomputer equipment or other suitable hardware on which a first portionor version of the interactive television program guide is implemented. Asecond portion or version of the program guide may be implemented onuser television equipment 22. The two versions or portions of theinteractive program guide may communicate using any suitablepeer-to-peer communications scheme (e.g., messaging, remote procedurecalls, etc.) and perform interactive program guide functionsdistributively between television distribution facility 16 and usertelevision equipment 22.

Another suitable arrangement in which an online program guide isimplemented on interactive program guide television equipment 17 isshown in FIG. 2 e. On-line program guide systems are described, forexample, in Boyer et al. U.S. patent application Ser. No. 08/938,028,filed Sep. 18, 1997, which is hereby incorporated by reference herein inits entirety. The user may have personal computer (PC) 231 on which aprogram guide client or web browser is implemented. Personal computer231 may be connected to Internet service system 235 via Internet link233. Internet service system 233 may use any suitable combination ofcomputer hardware and software capable of providing an on-line programguide server application or web site.

Internet service system 235 may be connected to remote media server 24of program guide distribution facility 16. In other suitablearrangements, the recording and playback functionality of remote mediaserver 24 may be incorporated into Internet service system 235 ifInternet service system 235 has suitable processing circuitry, memory,and storage.

Programs and program guide data may be recorded and played backon-demand by remote media server 24 in response to record and playbackrequests. Record and playback requests may be generated by a programguide server application or web application implemented on Internetservice system 235. Record and playback requests may also be generatedby an interactive program guide client implemented on personal computer231 and may be provided to remote media server 24 by Internet servicesystem 235. Programs and program guide data maybe provided by Internetservice system 235 to personal computer 231 using a suitable real-timeInternet video approach (e.g., using the M-Bone), or may be downloadedand stored by personal computer 231 for playback.

Remote media server 24 of FIGS. 2 a, 2 b, 2 c, 2 d, and 2 e recordsprograms, program guide data, or any suitable combination thereof andsupplies either or both to user television equipment 22 in response torequests generated by the program guide. Remote media server 24 may alsorecord program associated data, such as data carried in the verticalblanking interval (VBI) of an analog television channel or in a digitaldata track on a digital television channel. Examples of programassociated data are subtitles, text tracks, music information tracks,additional video formats, additional languages, or other additionaldata. As used herein, recording and playing back “programming” or“programs” may include, but does not require, recording and playing backprogram associated data. Remote media server 24 is shown as beinglocated at program guide distribution facility 16, but may be located ata separate distribution facility (e.g., a cable system headend, abroadcast distribution facility, a satellite television distributionfacility, or any other suitable type of television distributionfacility).

Remote media server 24 may be based on any suitable combination ofhardware and software suitable for recording and playing back programsor program guide data on demand. As defined herein, the phrase“recording on-demand” refers to recording a program or program guidedata in response to a user's selection of a program for recording. Theactual recording of a program need not take place at the same time thatsuch a selection is made. For example, a program may be selected forrecording before its scheduled broadcast time and may be recorded whenthe selected program is aired.

Remote media server 24 may include processing circuitry 11, memory 13,and storage 15. Processing circuitry 11 may include any suitableprocessor, such as a microprocessor or group of microprocessors, andother processing circuitry such as caching circuitry, direct memoryaccess (DMA) circuitry, digitizing circuitry, and input/output (I/O)circuitry. Processing circuitry 11 may also include circuitry suitablefor decoding program and data files stored on storage 15 and convertingthem to suitable video signals for distribution by distributionequipment 21. If programming is stored as Moving Pictures Experts Group(MPEG) MPEG-2 files, processing circuitry 11 may include, for example,an MPEG-2 decoder for decoding the files and converting them to NationalTelevision Standards Committee (NTSC) video. In another suitableapproach, processing circuitry passes the MPEG-2 files to distributionequipment 21 for distribution to users as an MPEG-2 data stream. TheMPEG-2 data stream may be decoded and displayed by user televisionequipment 22.

Memory 13 may be any memory suitable for caching and storing computercode for performing the functions of processing circuitry 11. Memory 13may be used to cache video programs, portions of video programs, orprogram guide data for processing circuitry 11 while programs are beingplayed back or recorded.

Storage 15 may be any storage suitable for recording programming filesand associated program guide data. One suitable arrangement for storage15 is shown in FIG. 3. The storage arrangement of FIG. 3 is onlyillustrative. Storage 15 may include any suitable recordable storagesystem and medium. Storage 15 may include, for example, tape array 51,optical storage tower 53, redundant arrays of independent disks (RAID)55, any other suitable mass storage system, or any suitable combinationthereof. Tape array 51 may include any suitable high-speed mass storagetape array, such as an 8 mm tape array. Tape array 51 may back-up orarchive programs stored on optical storage tower 53 or RAID 55.

Optical storage tower 53 may be any suitable recordable optical storagesystem. Optical storage tower 53 may, for example, record programs onrecordable compact disks (CDs) or digital versatile disks (DVDs). Duringplayback, programs and data stored on optical storage tower 53 may betemporarily stored in virtual memory (e.g., swap files) on RAID 55 foruse by memory 13, or may be provided directly to memory 13 (e.g., bysuitable DMA circuitry in processing circuitry 11) for decoding.

Storage 15 may be measured on the order of hundreds of gigabytes,terabytes, or more. While this may involve a considerable amount ofresources, storage 15 may still require less storage than a system thatrecorded every program (or a large subset of them) distributed byheadends for every programming time slot. Because the present systemtypically needs to record only those programs that are selected byusers, less popular programs need not be routinely recorded, whichreduces the overall storage requirements of the system. Storage 15 mayalso be less than the total storage that would be maintained by allusers at their homes if each user recorded his or her own copies ofprograms individually. Remote media server 24 may allocate a specificamount of storage for each user if desired. This amount may be fixed ormay be configurable.

Recorded programs may be referenced by pointers that are maintained inone or more directories. A directory of pointers for each user, forexample, may be stored in memory 13 or RAID 55. User directories mayalso be maintained locally by the program guides. An illustrativearrangement for user directories and other directories is shown in FIG.4. Each user directory 59 may include an identifier for each programthat has been recorded for the user and a pointer to the storage deviceon which the program was originally recorded. In this example, programs1 and 3 were originally recorded on optical storage tower 53. Programs 4and 2 were originally recorded on RAID 55. Programs may also be recordedon tape array 51 and different parts of a single program may be recordedon different storage devices if desired but these aspects of theinvention are not shown in FIG. 4 to avoid overcomplicating the drawing.

Each storage device may maintain a media directory 61 and a media store63. As used herein, a media store is any physical or virtual partitionof a storage device or storage medium that is used to store programs,program guide data, or any suitable combination thereof, and may alsoinclude an entire storage device or storage medium having one or nopartitions. Each media directory 61 may include a list of programsrecorded by the storage device. Each media directory 61 may also includepointers to where the programs are stored in media store 63. If desired,tape array 51 may be used to archive programs that are stored onoptional storage tower 53 or RAID 55 for a predefined period of time(e.g., one month). In addition, programs may be archived by opticalstorage tower 53 for RAID 55 (not shown). PROGRAM 3 is an example of aprogram that has been archived by tape array 51. A media directory 61entry may reflect the archiving by pointing to a media directory 61entry on tape array 51, if desired.

Remote media server 24 records programs and associated program guidedata on storage 15 in response to record requests generated by theprogram guide implemented on interactive program guide televisionequipment 17. As defined herein, a “record request” is any command,request, message, remote procedure call, object based communication, orany other type of interprocess or inter-object based communication thatallows the program guide to communicate information on the program thatthe user wishes to record to the media server.

An illustrative data flow diagram showing how programs may be recordedby remote media server 24 is shown in FIG. 5. Record requests generatedby program guides implemented on interactive program guide televisionequipment 17 may be queued in request queue 110 for consolidation.Consolidator 115 may be a process running on remote media server 24.Consolidator 115 consolidates multiple record requests for the sameprograms and places individual and group record jobs on job queue 120.

In practice, it may not be desirable to record a program unless acertain number of users have requested it. At a predefined period oftime before the requested program airs, consolidator 115 may check jobqueue 120 to see if enough users have requested the program. If thereare not enough users, consolidator 115 may generate a message that isdistributed back to the requesting user or users by distributionequipment 21. When the program guide receives such a message, theprogram guide may notify the user that the program is not beingrecorded. Alternatively, the program guide may request that the programbe recorded by a local media server, such as local media server 29 ofFIG. 6, or may record the program itself on a storage device.

Illustrative entries 121 in job queue 120 are also shown in FIG. 5. Theentries 121 may include, for example, the dates, start times, end times(or durations), channels, and program identifiers for the programs thathave been selected for recording on remote media server 24. The entriesmay also include lists of the users who have selected each program forrecording. FIG. 5 shows, for example, that PROGRAM 2 has been selectedfor recording by user 1 and user 2. If a program is popular, numeroususers may request that it be recorded.

Recorder 125 may be a process running on processing circuitry 11 ofremote media server 24 that is suitable for monitoring job queue 120 andrecording programs on storage 15. Processing circuitry 11 of remotemedia server 24 may include, for example, one or more tuners, digitalencoders, or digital decoders for tuning to or otherwise selectingprogramming provided by distribution equipment 21 and formatting theprograms for recording by remote media server 24. Any suitablecombination of analog and digital tuners and decoders are hereinafterreferred to as tuners to simplify the discussion. Recorder 125 maydirect the one or more tuners to particular channels (analog or digital)at particular times based on entries in job queue 120. In this example,recorder 125 may direct a first tuner to tune to channel 4 on Dec. 21,1999 to record PROGRAM 1 for user 1. Recorder 125 may also direct asecond tuner to tune to channel 5 at the same time to record PROGRAM 2for user 1 and user 2. The upper limit on the number of tuners neededfor remote media server 24 may be the number of channels distributed bydistribution equipment 21. Such tuners may be based on tuning anddecoding circuitry implemented using one or more integrated circuits.

If desired, recorder 125 may direct processing circuitry 11 to encodeprogramming and program guide data as digital files (e.g., MPEG-2 files)or as a digital data stream (e.g., an MPEG-2 data stream). Storage 15may record the files or data stream using, for example, suitable DMAtechniques. Processing circuitry 11 may compress the digital files ordata stream using any suitable digital compression algorithm, ifdesired.

The storage device on which a program has been recorded may supplyrecorder 125 with a pointer to the entry in the media directory 61 forthe recorded program. This may be done automatically or in response to aquery generated by recorder 125. If user directories 59 (FIG. 4) aremaintained by remote media server 24, recorder 125 may place entries inthe user directories 59 of the users who selected the program forrecording. If copies of user directories 59 are maintained locally bythe program guides, the program guides may, for example, download theuser directories via program guide server 25 or using any other suitableapproach. Alternatively, the program guide may just download pointers tothe media directory entries. If user directories 59 are maintainedexclusively by the program guides, the program guides may receive thepointer to the media directory 61 in which the program is listedautomatically in response to the record request, after issuing asuitable request for the pointer, or using any other suitable approach.

Remote media server 24 retrieves programs from storage 15 in response toretrieval requests generated by the program guides implemented oninteractive program guide television equipment 17. Processing circuitry11 may process the requests by searching a user's user directory 59 forthe requested programs and then issuing a suitable retrieval command (orrequest) to storage 15 based on the pointer in the directory. Forexample, when user 1 requests the playing of PROGRAM 1, processingcircuitry 11 issues an appropriate retrieval command to optical storagetower 53. The program is retrieved from media store 63 and may be passedto memory 13 (e.g., via DMA circuitry in processing circuitry 11) fordecoding by processing circuitry 11 and distribution to user televisionequipment 22. If desired, processing circuitry may pass a requestedprogram in its digital form to distribution equipment 21 fordistribution to user television equipment 22.

If a requested program has been archived (e.g., stored on a storagedevice other than the one on which the program was originally stored),the original storage device may issue a suitable retrieval command tothe archiving storage device in response to commands (or requests)generated by processing circuitry 11. For example, when user 1 requeststhe retrieval of PROGRAM 3 for playback, processing circuitry 11 mayissue a retrieval command to optical storage tower 53. Optical storagetower 53 in turn examines its media directory 61, determines thatPROGRAM 3 has been archived, and issues a retrieval request to tapearray 51. Tape array 51 retrieves the program from its media store 63,and transmits it to optical storage tower 53 using any suitableinterconnection (e.g., a parallel connection, a small computer systemsinterface (SCSI) connection (e.g., wide SCSI-2, fast wide SCSI-2, ultraSCSI-3, etc.), a universal serial bus (USB) connection, or any othersuitable connection). Alternatively, the archiving device, in thisexample tape array 51, may transfer the program directly to memory 13(e.g., via DMA circuitry in processing circuitry 11). If desired,processing circuitry 11 may determine whether a program has beenarchived, and may issue a retrieval request to tape array 51.

During system operation, multiple users may request the playback of asingle program such that the playback of the program for one useroverlaps the playback of the program for another user. Remote mediaserver 24 may simultaneously play back the same program for a number ofusers by, for example, assigning a pointer to each user that points tothe user's current viewing position within the program. One suitableapproach may involve caching the entire program or portions of it indigital form in memory 13.

FIGS. 6 a and 6 b illustrate how pointers may be used to simultaneouslyplay the same program for multiple users. After remote media server 24receives a request for a program, remote media server 24 assigns apointer to the requesting user and retrieves all or a portion of therequested program. FIG. 6 a illustrates remote media server 24 cachingan entire two-hour movie that is being simultaneously played for threeusers. FIG. 5 b illustrates remote media server 24 caching apredetermined amount (e.g., 15 minutes) of a requested movie for each ofthree users.

As a movie progresses, remote media server 24 may increment each user'spointer. Remote media server 24 may also pre-decode a predeterminedamount of time (e.g., the next 5 minutes) of the program so that as auser's pointer advances, the video is ready for distribution bydistribution equipment 21. If a user rewinds a movie, remote mediaserver 24 may regress the user's pointer (i.e., move it to the left) andpre-decode a previous portion of the movie.

If remote media server 24 caches only portions of a program as shown inFIG. 6 b, it may only cache a single copy of each portion in memory 13.As user 1 advances the movie toward minute 15, for example, remote mediaserver 24 may check to see if minutes 15 to 30 are already cached. Inthis example they are, and the copy (to which user 2 points) may be usedfor user one. If minutes 15 to 30 were not already cached, media server25 may prefetch them and pre-decode a suitable amount (e.g., 5 minutes)so that the video stream for user 1 is not interrupted. If desired,media server 25 may continually prefetch the next 15 minutes (or less)of data.

Program guide data and recorded videos may be distributed bydistribution equipment 21 to user television equipment 22 as a suitableanalog video signal (e.g., NTSC video), or in a suitable digital format(e.g., as MPEG-2 files or as an MPEG-2 data stream) using any suitableapproach. For example, programs and program guide data may be playedback by media server 24 and distributed to user television equipment 22for viewing in real-time. If programs and program guide data aredistributed as digital data stream, user television equipment 22 maydecode the data stream in real time. Such on-demand programs and programguide data may be played back according to preferences that were set upby the user. In a second suitable approach, programs and program guidedata are distributed as one or more digital files or as a digital datastream, and are stored by user television equipment 22 for playback. Ina third suitable approach, programs and program guide data are playedback by remote media server 24 and distributed according to a scheduleover an analog or digital channel using a suitable near-video-on-demand(NVOD) approach. In still another suitable approach, remote media server24 may record programs and program guide data on physical media, such asa DVD or videocassette, that are sent to the user. Any combination ofthese approaches, or any other suitable approach, may also be used.

An illustrative arrangement for user television equipment 22 is shown inFIG. 7. User television equipment 22 of FIG. 7 receives analog video ora digital video stream from a distribution facility at input 26. Datafrom program guide distribution facility 16 is also received at input26. During normal television viewing, the user tunes set-top box 28 to adesired television channel (analog or digital). The signal for thattelevision channel is then provided at video output 30. The signalsupplied at output 30 is typically either a radio-frequency (RF) signalon a predefined channel (e.g., channel 3 or 4), or a analog demodulatedvideo signal, but may also be a digital signal provided to television 36on an appropriate digital bus (e.g., a bus using the Institute ofElectrical and Electronics Engineers (IEEE) 1394 standard, (not shown)).The video signal at output 30 is received by optional secondary storagedevice 32.

The interactive television program guide or program guide client may runon set-top box 28, on television 36, on optional digital storage device31 (if television 36 or optional digital storage device 31 has suitableprocessing circuitry and memory), or on a suitable analog or digitalreceiver connected to television 36. The interactive television programguide may also run cooperatively on both television 36 and set-top box28. Interactive television application systems in which a cooperativeinteractive television program guide application runs on multipledevices are described, for example, in Ellis U.S. patent applicationSer. No. 09/186,598, filed Nov. 5, 1998, which is hereby incorporated byreference herein in its entirety.

Secondary storage device 32 can be any suitable type of analog ordigital program storage device or player (e.g., a videocassetterecorder, a digital video disc (DVD) player, etc.). Program recordingand other features may be controlled by set-top box 28 using controlpath 34. If secondary storage device 32 is a videocassette recorder, forexample, a typical control path 34 involves the use of an infraredtransmitter coupled to the infrared receiver in the videocassetterecorder that normally accepts commands from a remote control such asremote control 40. Remote control 40 may be used to control set-top box28, secondary storage device 32, and television 36.

If desired, the user may record programs, program guide data, or acombination thereof in digital form on optional digital storage device31. Digital storage device 31 may be a writable optical storage device(such as a DVD player capable of handling recordable DVD discs), amagnetic storage device (such as a disk drive or digital tape), or anyother digital storage device. Interactive television program guidesystems that have digital storage devices are described, for example, inHassell et al. U.S. patent application Ser. No. 09/157,256, filed Sep.17, 1998, which is hereby incorporated by reference herein in itsentirety.

Digital storage device 31 can be contained in set-top box 28 or it canbe an external device connected to set-top box 28 via an output port andappropriate interface. Digital storage device 31 may, for example, becontained in local media server 29. If necessary, processing circuitryin set-top box 28 formats the received video, audio and data signalsinto a digital file format. Preferably, the file format is an open fileformat such as the Moving Pictures Expert Group (MPEG) MPEG-2 standardor the Moving Joint Photographic Experts Group (MJPEG) standard. Theresulting data is streamed to digital storage device 31 via anappropriate bus (e.g., a bus using the Institute Electrical andElectronics Engineers (IEEE) 1394 standard), and is stored on digitalstorage device 31. In another suitable approach, an MPEG-2 data streamor series of files may be received from distribution equipment 21 andstored in digital storage device 31. For example, files from televisiondistribution facility 16 for programs recorded by the user using remotemedia server 24 may be stored. Such digital files may be played back tothe user when desired.

In typical program guide systems, secondary storage device 32 or digitalstorage device 31 are necessary to provide users with the ability torecord programs. Such storage devices are unnecessary when practicingthe current invention because users may record programs on remote mediaserver 24. In practice, such storage devices may be omitted from usertelevision equipment 22 with minimal or no effect on program guidefunctionality, while also tending to minimize the cost of usertelevision equipment 22.

Television 36 receives video signals from secondary storage device 32via communications path 38. The video signals on communications path 38may either be generated by secondary storage device 32 when playing backa prerecorded storage medium (e.g., a videocassette or a recordabledigital video disc), by digital storage device 31 when playing back apre-recorded digital video (e.g., a video for a program that wasrecorded by the user at remote media server 24 or local media server29), may be passed through from set-top box 28, may be provided directlyto television 36 via set-top box 28 if secondary storage device 32 isnot included in user television equipment 22, or may be receiveddirectly by television 36. During normal television viewing, the videosignals provided to television 36 correspond to the desired channel towhich the user has tuned with set-top box 28. Video signals may also beprovided to television 36 by set-top box 28 when set-top box 28 is usedto play back information stored on digital storage device 31, or whenset-top box 28 is used to decode a digital video stream, or digitalfiles transmitted from television distribution facility 16.

Set-top box 28 may have communications device 37 for communicatingdirectly with program guide server 25, remote media server 24, orInternet service system 61 over communications path 20. Communicationsdevice 37 may also support communications between user televisionequipment 22 and local media server 29 via communications path 167 ifdesired. Communications path 167 may be any suitable link, such as aserial or parallel link, network link, an Internet link, DOCSIS link,radio link, infrared link or any other suitable wired or wirelessdigital or analog link.

Communications device 37 may be a modem (e.g., any suitable analog ordigital standard, cellular, or cable modem), network interface card(e.g., an Ethernet card, token ring card, etc.), or other suitablecommunications device. Communications device 37 may also be a personalcomputer with an Internet connection such as with the arrangements shownin FIGS. 2 c and 2 d. Television 36 may also have such a suitablecommunications device if desired. In an alternative approach, usertelevision equipment 22 may communicate with remote media server 24 orInternet service system 61 via distribution equipment 21 using asuitable return path or communications path 20.

The program guide may communicate with program guide server 25, remotemedia server 24, or Internet service system 61 over communications path20 using any suitable network and transport layer protocols, if desired.A protocol stack may be used which includes, for example, SequencedPacket Exchange/Internetwork Packet Exchange (SPX/IPX) layers,Transmission Control Protocol/Internet Protocol (TCP/IP) layers,Appletalk Transaction Protocol/Datagram Delivery Protocol (ATP/DDP)layers, or any other suitable network and transport layer protocols. Ifdesired DOCSIS may also be used. These protocols may also be used forcommunicating with local media server 29, but in practice other suitableprotocols may be used to communicate with server 29, such as the Jininetworking protocol by Sun Microsystems.

Local media server 29 may be a device in the home of the user that issuitable for storing and playing back programs on demand. Local mediaserver 29 may be, for example, a personal computer connected to set-topbox 28 via an Ethernet connection, standard serial or parallel port,universal serial bus, an IEEE 1394 bus, etc.

Local media server 29 may have processing circuitry 33, memory 35, andstorage 37. Processing circuitry 33 may include any suitable processor,such as a microprocessor or group of microprocessors, and otherprocessing circuitry such as caching circuitry, direct memory access(DMA) circuitry, and input/output (I/O) circuitry. Processing circuitry33 may also include circuitry suitable for recording programs on demand.Processing circuitry 33 may also include circuitry suitable for decodingprogram and data files stored on storage 37 and converting them tosuitable video signals for playback by user television equipment 22. Ifprogramming is stored as MPEG-2 files, processing circuitry 33 mayinclude, for example, an MPEG-2 decoder for decoding the files andconverting them to National Television Standards Committee (NTSC) Video.

Memory 35 may be any memory suitable for caching and storing computercode for performing the functions of processing circuitry 33. Memory 35may also be used to cache video programs or portions of video programsfor processing circuitry 33 while the programs are being played forusers. Storage 37 may be any storage suitable for recording programmingfiles and associated program guide data. Storage 37 may, for example, bea suitable hard disk having a capacity measured in gigabytes or more.User directories, such as user directory 59 of FIG. 4, may be maintainedby processing circuitry 33 and stored in memory 35, storage 37, or both.

An illustrative arrangement for remote control 40 is shown in FIG. 8.Remote control 40 may have any suitable buttons or keys for providing auser with an opportunity to change channels, navigate within the programguide, access program guide functions, control a storage device or mediaserver, or any other suitable keys. More specifically, the user maydepress number keys 801 to enter channel numbers, parental controlcodes, purchase codes, etc. The user may depress “Guide” key 805 to, forexample, access the program guide, and depress arrow keys 803, page upkey 805, and page down key 807 to navigate within the guide. The usermay depress the “PLAY” key 809, “FF” key 811, “REW” key 813, “REC” key815, “STOP” key 819 and “PAUSE” key 817 to play, fast-forward, rewind,record, stop and pause programs on a media server or stage device.

A more generalized embodiment of user television equipment 22 of FIG. 7is shown in FIG. 9. As shown in FIG. 9, program guide data from programguide distribution facility 16 (FIG. 1) is received by control circuitry42 of user television equipment 22. The functions of control circuitry42 may be provided using the set-top box arrangement of FIG. 7.Alternatively, these functions may be integrated into an advancedtelevision receiver (e.g., a digital television receiver or highdefinition television (HDTV) receiver), personal computer television(PC/TV), or any other suitable arrangement. If desired, a combination ofsuch arrangements may be used.

User television equipment 22 of FIG. 9 may have secondary storage device47, digital storage device 49, or any suitable combination thereof forrecording programming. Secondary storage device 47 and digital storagedevice 49 may be omitted if desired. Secondary storage device 47 can beany suitable type of analog or digital program storage device (e.g., avideocassette recorder, a digital versatile disc (DVD), etc.). Programrecording and other features may be controlled by control circuitry 42.Digital storage device 49 may be, for example, a writable opticalstorage device (such as a DVD player capable of handling recordable DVDdiscs), a magnetic storage device (such as a disk drive or digitaltape), or any other digital storage device.

Memory 63 may be any memory or other storage device, such as a randomaccess memory (RAM), read only memory (ROM), flash memory, a hard diskdrive, a combination of such devices, etc., that is suitable for storingprogram guide application instructions and program guide data for use bycontrol circuitry 42. Memory 63 may also be used for caching videos. Theprogram guide may also store a copy of the user directory 59 maintainedby remote media server 24 in memory 63. The program guide may, forexample, receive copies of user directory 59 as part of the programguide data stream. In one suitable approach, user directory 59 may beautomatically downloaded to the program guide whenever directory 59 isentered, such as when the user records a program, deletes a program, orremote media server 24 automatically deletes a program because it hasbeen stored for too long. Alternatively, the program guide may obtaincopies of user directory 59 from program guide server 25 or remote mediaserver 24. With another suitable approach, the program guide maymaintain user directory 59 in memory 63. The program guide may includepointers to media directories 61 in retrieval requests transmitted toremote media server 24.

User television equipment 22 of FIG. 9 may have communications device 51for supporting communications between user television equipment 22 andremote media server 24 or Internet service system 61 via communicationspath 20. Communications device 51 may also support communicationsbetween user television equipment 22 and local media server 29.Communications device 51 may be a modem (e.g., any suitable analog ordigital standard, cellular, or cable modem), network interface card(e.g., an Ethernet card, Token ring card, etc.), or other suitablecommunications device.

The user controls the operation of user television equipment 22 withuser input device 46. User input device 46 may be a pointing device,wireless remote control, keyboard, touch-pad, voice recognition system,pen-based computer device or any other suitable user input device. Towatch television, the user instructs control circuitry 42 to display adesired television channel on display device 45. To access the functionsof the program guide, the user instructs the program guide implementedon interactive program guide television equipment 17 to generate a mainmenu or other desired program guide display screen for display ondisplay device 45.

When a user indicates a desire to access the interactive televisionprogram guide (e.g., by using a “MENU” key on remote control 40), theprogram guide generates an appropriate program guide display screen fordisplay on display device 45. A main menu screen such as illustrativemain menu screen 100 of FIG. 10 may be generated that provides the userwith access to various program guide functions. Main menu screens maycontain various advertisements, logos, etc.

Illustrative main menu screen 100 of FIG. 10 includes a menu 102 ofselectable program guide features 106. If desired, selectable features106 may be organized according to feature type. In menu 102, forexample, program guide options 106 have been organized into threecolumns. The column labeled “TV GUIDE” is for listings-related features,the column labeled “MSO SHOWCASE” is for multiple system operator (MSO)related features, and the column labeled “VIEWER SERVICES” is forviewer-related features. The interactive television program guide maygenerate a display screen for a particular program guide feature whenthe user selects that feature from menu 102.

Main menu screen 100 may include one or more selectable advertisements108. Selectable advertisements 108 may, for example, include text andgraphics advertising for pay-per-view programs. When the user selects aselectable advertisement 108, the program guide may display information(e.g., pay-per-view information) or take other actions related to thecontent of the advertisement. Pure text advertisements may be presented,if desired, as illustrated by selectable advertisement banner 110.

Main menu screen 100 may also include other screen elements. The brandof the program guide product may be indicated, for example, using aproduct brand logo graphic such as product brand logo graphic 112. Theidentity of the television service provider may be presented, forexample, using a service provider logo graphic such as service providerlogo graphic 114. The current time may be displayed in clock displayregion 116. In addition, a suitable indicator such as indicator graphic118 may be used to indicate to the user that mail from a cable operatoris waiting for the user if the program guide supports messagingfunctions.

One function of the interactive television program guide may be toprovide the user with the opportunity to view television programlistings. A user may indicate a desire to view program listings by, forexample, positioning highlight region 120 over a desired program guideoption related to program listings (e.g., the “movies” option). Theprogram guide may also present program listings when the user presses asuitable key (e.g., a “GUIDE” key) on remote control 40. When the userindicates a desire to view television program listings, the programguide may obtain program listings data from a data stream provided byprogram guide distribution facility 16, from server 25, or from memory63 and may generate an appropriate program listings screen for displayon monitor 45. A program listings screen may contain one or more groupsor lists of program listings organized according to one or moreorganization criteria (e.g., by program category).

The program listings screen may be fully or partially overlaid over aprogram being viewed by the user. Listings may also be overlaid over orotherwise placed on the same screen as the program in a “browse” mode.The program guide may, for example, provide the user with theopportunity to view listings by time, by channel, according to a numberof categories (e.g., movies, sports, children, etc.), or may allow theuser to search for a listing by title. Program listings may be displayedusing any suitable list, table, grid, or other suitable displayarrangement. If desired, program listings display screens may includeselectable advertisements, product brand logo graphics, service providerbrand graphics, clocks, or any other suitable indicator or graphic.

A user may indicate a desire to view program listings by time, channel,or category by, for example, selecting a selectable feature from menu102. In response, the program guide may display program listings in asuitable listings display screen. FIGS. 11 a, 11 b, and 11 c illustratethe display of program listings by time, by channel, and by category,respectively. The program listings display screens 130, 135, and 140 ofFIGS. 11 a, 11 b, and 11 c may include highlight region 151, whichhighlights the current program listing 150. The user may positionhighlight region 151 by entering appropriate commands with user inputdevice 46. For example, if user input device 46 has a keypad, the usercan position highlight region 151 using up, down, left, and right arrowkeys. Remote program listings may also be panned left, right, up, anddown by positioning highlight region 151 using the arrow keys on remotecontrol 40. Alternatively, a touch sensitive screen, trackball, voicerecognition device, pen-based computer device, or other suitable devicemay be used to move highlight region 151 or to select program listingswithout the use of highlight region 151. In still another approach, theuser may speak a television program listing into a voice requestrecognition system. These methods of selecting program listings aremerely illustrative. Any other suitable approach for selecting programlistings or other items in the program guide may be used if desired.

The program guide may provide the user with an opportunity to viewprogram listings for other times or channels. The user may indicate adesire to access listings for other times or channels by, for example,using left and right arrow keys to change time slots (when programlistings are presented by time as shown in FIG. 11 a), or to changechannels (when program listings are presented by channel as shown inFIG. 11 b). In response to such an indication, the program guide may,for example, scroll or page the program listings to display additionalprogram listings.

The program listings screens of FIGS. 11 a, 11 b and 11 c may alsoinclude listings for programs recorded by, or selected for recording by,remote media server 24 or local media server 29. Recorded programs maybe displayed, for example, at the beginning of the listings. Programs tobe recorded may be displayed in their normal position within a list andmay, if desired, have an icon indicating them as to be recorded. FIG. 11a shows, for, example, a listing for a scheduled recording of “I LoveLucy” at 10:30 PM on Jun. 5, 1999. The listing has icon 299 thatindicates the listing is for a program that is to be recorded. FIG. 11 bshows, for example, a comedy program listing for a recorded copy of thecomedy “Saturday Night Live” that was recorded at 11:00 on Jun. 1, 1999.FIG. 11 c shows, for example, a movie listing for a recorded copy of themovie “Perfect Body,” recorded at 9:00 PM on May 31, 1999.

FIGS. 11 a, 11 b and 11 c show listings for recorded programs andprograms scheduled for recording as having a slightly different listingdisplay format than the listings for regular programs. For example,recorded programs have their actual or anticipated record datesdisplayed. If desired, any other suitable approach may be used toindicate that some listings are for recorded programs or programsscheduled for recording. Such listings may have a different color, adifferent font, a shading, an icon or any other effect that indicatesthey are not regular program listings. Alternately, such listings may beomitted from program listings screens.

The program guide may also provide a user with an opportunity to viewpay-per-view program listings. A user may, for example, indicate adesire to view pay-per-view program listings by selecting the “PPV Time”on-screen feature of main menu 102 of FIG. 10. In response, the programguide may display pay-per-view program listings by time, as isillustrated by pay-per-view listings by time screens 203 of FIG. 12 a.As with other listings screens, a user may scroll up and down to viewpay-per-view program listings for additional channels. A user may viewprogram listings for additional time slots by arrowing right. A user mayalso, for example, select selectable advertisements by arrowing to theleft.

The program guide may also provide a user with an opportunity to viewpay-per-view program listings by title. A user may indicate a desire toview pay-per-view program listings by title by, for example, selecting a“PPV Title” selectable feature from main menu 102 of FIG. 10. Inresponse, the program guide may display pay-per-view program listings bytitle as shown, for example, in pay-per-view program listings by titlescreen 211 of FIG. 12 b. The program guide may provide a user with anopportunity to highlight a selectable advertisement by, for example,arrowing left.

The interactive program guide may allow the user to view programlistings while watching television programming by, for example,overlaying a “FLIP” or “BROWSE” display region over a televisionprogram. FIG. 13 a shows an illustrative FLIP display 200 that theprogram guide may display whenever the user changes television channels.The FLIP display may contain information associated with the currentprogram, such as the program title 210, running time 215, the currentchannel number 216, and the current channel's call letters 225. The FLIPdisplay may also include a number of graphics, such as brand logo 230, asponsorship graphic, a channel logo graphic, mail indicator, selectableadvertisement or any other suitable graphic. The program's rating mayalso be displayed. If desired, brand logo 230 may be replaced with orused together with a selectable information icon. The user may, forexample, press an “INFO” key on remote control 40 to obtain additionalprogram information for the program currently displayed in FLIP display200.

FLIP display 200 may also include rating indicator 227 for indicatingthe rating of the current program. If the program guide provides aparental control feature, the rating of the program on each new channelthe user tunes to may be examined by the program guide to determinewhether the program meets parental control settings that were previouslyestablished by the user. If the program rating is not acceptable, theprogram guide may, for example, display only the FLIP banner without theprogram video and prompt for a parental control code.

FIG. 13 b shows an illustrative “BROWSE” overlay or display that theprogram guide may display when the user indicates a desire to browsethrough program listings for a given time slot (e.g., by means of a“browse” key on remote control 40). The user may browse through programlistings by, for example, using remote control arrow keys. Unlike theFLIP display, the BROWSE display allows the user to continue to watch aprogram on a particular channel (e.g., channel 178) while browsing forinformation on programs that are playing on other channels or at othertimes.

The FLIP and BROWSE overlays of FIGS. 13 a and 13 b have been shown asincluding a brand logo displayed at the left of the overlay. The logomay also, for example, promote different sponsors as the user browsesprogram listings or flips between channels. The logos may change withinthe same overlay or banner if the user displays the overlay or bannerfor a predefined time. The logo may, for example, automatically rotatethrough a list of logo advertisements, returning to the firstadvertisement after each advertisement in the list has been displayed.The brand logo may also be replaced by a text based advertisement.

In addition to providing the user with the opportunity to accesstelevision programming and program guide data in these and other ways,the program guide may provide the user with an opportunity to recordprograms on demand at remote media server 24 or local media server 29,to view listings or directories of the programs that have been recordedor selected for recording, and to play videos and associated programguide data on demand from remote media server 24 or local media server29. The program guide may also provide a user with an opportunity torecord series of programs or other program groupings (e.g., pay-per-viewpackages). Program guide systems that provide users with an opportunityto record program series are described, for example, in Knudson et al.U.S. patent application Ser. No. 09/330,792, filed on Jun. 11, 1999,which is hereby incorporated by reference herein in its entirety. Usersmay indicate a desire to record a program or group of programs on demandby, for example, pressing a “RECORD” key on remote control 40 whilewatching a program or after highlighting its listing.

FIGS. 14 a and 14 b show illustrative overlays 1331 that may bedisplayed by the program guide when a user indicates a desire to recorda program on remote media server 24 or local media server 29. Overlay1331 may be displayed when, for example, a user indicates a desire torecord the program that the user is watching, as shown in FIG. 14 a.Alternatively, overlay 1331 may be overlaid on a program listingsdisplay screen when, for example, a user highlights a listing andindicates a desire to record the listed program (e.g., by pressing a“RECORD” key on remote control 40), as shown in FIG. 14 b. Overlay 1331may prompt the user to confirm the record request by, for example,selecting “Yes”. These ways of providing a user with the opportunity torecord a program are only illustrative and any other suitable approachmay be used.

FIGS. 14 c and 14 d show additional illustrative overlays of 1339 thatmay, for example, replace overlays 1331 of FIGS. 14 a and 14 b.Alternatively, the program guide may display overlay 1339 when the userselects “Yes” from within overlay 1331 of FIGS. 13 a and 13 b. Overlay1339 indicates to the user the charge for recording the selected programon remote media server 24. Overlay 1339 also provides the user with anopportunity to confirm or cancel the record.

The charge displayed in overlay 1339 may be based on any suitable userbilling scheme. Users may be charged, for example, on a per-recordbasis, based on how long a program is, or may be charged a flatsubscriber rate for unlimited recording within a period (e.g. one permonth). Program guide distribution equipment 16 may provide the chargeand other suitable program guide data (e.g., the title, airtime, etc.)to billing system 199. Billing system 199 may generate a bill that issent to the user, or may automatically debit the user's account.

FIG. 14 e shows an illustrative overlay 1339 that the program guide maydisplay when, for example, a user selects a program that is part of aprogram grouping. Overlay 1447 may indicate to the user that a programis part of a program grouping, in this example a series, and prompt theuser to confirm whether the user wishes to record all programs in thegrouping. If the user selects “Yes,” remote media server 24 or localmedia server 29 may record all programs in the grouping. If the userselects “No,” the program guide may display overlay 1331 of FIGS. 14 a,14 b, 14 c, or 14 d to prompt the user to confirm recording only thatshowing.

The program guide may provide the user with an opportunity to recordpay-per-view programs and packages. An illustrative pay-per-viewordering overlay 370 is shown in FIG. 15 a. The program guide maydisplay pay-per-view ordering overlay 370 when, for example, the userhighlights a pay-per-view program listing and presses an “order” orother suitable key on remote control 40. Pay-per-view ordering overlay370 may display and ordering information 374, and may prompt the user toorder the selected pay-per-view program by entering a purchase code. Theuser may enter a purchase code using, for example, number keys on remotecontrol 40, or may cancel the purchase and return to the last screen byselecting “CANCEL” feature 376. The program guide may also provide theuser with the opportunity to confirm the pay-per-view order usingillustrative order confirmation overlay 380 of FIG. 15 b. If desired,the program guide may display order confirmation overlay 380 of FIG. 15b instead of pay-per-view ordering overlay 370 to provide the user withthe opportunity to order a pay-per-view program without requiring theuser to enter a purchase code.

The charge displayed in overlays 370 and 380 may be set using anysuitable approach. The charge may, for example, be the same whether auser watches a pay-per-view or records it. Alternatively, the user maybe charged a different fee when just recording a pay-per-view program.In another suitable approach, charges for pay-per-view programs maydiffer depending on the length of the program. In still another suitableapproach, the user may pay a flat charge for recording any amount ofpay-per-views within a predetermined period (e.g., a month). The chargemay be provided by program guide distribution equipment 16 to billingsystem 199 for billing the user or otherwise adjusting the user'saccount.

When a user indicates a desire to record a pay-per-view package by, forexample, selecting a package listing from pay-per-view program listingsscreens 203 or 211 of FIGS. 12 a and 12 b, the program guide may displaya package order screen, such as package order screen 811 of FIG. 17.Package order screen 811 may prompt a user for a purchase code. After auser enters a correct purchase code, the program guide orders thepay-per-view package from program guide distribution facility 16 oranother suitable distribution facility.

The charge of the package as displayed in FIG. 17 may be set using anysuitable approach. The charge may, for example, be the same whether auser watches each pay-per-view program in the package or whether theuser records each program. Alternatively, the user may be charged adifferent fee when recording one or more pay-per-view programs in apackage than when watching them. In another approach, charges forpay-per-view programs may differ depending on the length of each programin the package. In still another approach, the user may pay a flatcharge for recording any amount of pay-per-views within a predeterminedperiod (e.g., a month). The charge may be provided by program guidedistribution equipment 16 to billing system 199 for billing the user orotherwise adjusting the user's account.

When a user indicates a desire to record a program or program groupingon remote media server 24 or local media server 29 (and possibly adesire to confirm recording of the program), the program guide generatesa record request that is transmitted to the appropriate remote mediaserver by communications device 51 (FIG. 9) via communications path 20or 31. The record request may include, for example, an identifier forthe program that the user wishes to record, an identifier for the user,and, if desired, any other information related to the program and theuser. If the user indicated a desire to record a program grouping, therequest may include a grouping identifier or the program identifiers ofthe constituent programs.

At the time a selected program or program in a grouping airs (which maybe the time at which the program is selected for recording), remotemedia server 24 or local media server 29 may record the program and anyassociated program guide data. Program guide data may be stored as filesassociated with the program using pointers. Once the selected program isrecorded, remote media server 24 or local media server 29 may provide acopy of user directory 59 to the program guide if the program guidemaintains a copy of user directories. Alternatively, remote media server24 or local media server 29 may provide a pointer to the location of theprogram on media store 63. In still another suitable approach, userdirectories 59 may be maintained solely by remote media server 24 orlocal media server 29 and provided to the program guide on request.

In practice, some programs may be copy protected. Main facility 12,program guide distribution facility 16, or another distribution facilitymay, for example, designate some programs as not recordable. When theuser indicates a desire to record a copy protected program, the programguide may indicate to the user that the program cannot be recorded asshown in FIG. 16.

The program guide may provide the user with the opportunity to access adirectory or other such list of programs that have been recorded for theuser on remote media server 24 or local media server 29. The user mayindicate a desire to access a directory or list of recorded programs by,for example, pressing a “DIR” key on remote control 40 or selecting a“Directory” feature from main menu 107. FIGS. 18 a and 18 b showillustrative overlays 320 that may be displayed by the program guidewhen the user indicates a desire to view a directory of the programsthat the user has recorded on remote media server 24 or local mediaserver 29. FIG. 18 a shows overlay 320 overlaid on top of the video ofthe channel that the viewer is watching. FIG. 18 b shows overlay 32overlaid on top of a program listings screen. Overlay 320 may displayany information related to the programming that the user has selectedfor recording by remote media server 24 or local media server 29.Overlay 320 may display, for example, the channels and titles of therecorded programs, the dates and times they are recorded, or any othersuitable information.

Program listings for recorded programs may be organized by channel,theme, user, or by any other suitable criteria. In practice, programlistings for recorded programs may be displayed in overlays based on thetype of display screen over which the overlays are displayed. In FIG. 18b, for example, listings are displayed by time because the displayscreen over which they are displayed displays program listings by time.FIG. 18 c shows listings of recorded programs in the movies category,because the display screen over which they are displayed only displayslistings for movies. FIGS. 18 b and 18 c are illustrative and anysuitable criteria may be used. In addition, program listings may bedisplayed using display criteria or based on themes when the programlistings are overlaid on top of a video the user is watching.

FIG. 18 d shows an illustrative directory screen 350 that may bedisplayed by the program guide when the user indicates a desire to viewa directory of the programs that the user has recorded on remote mediaserver 24 or local media server 29. Directory screen 350 may displayprogram-related information like that displayed by overlay 320.Directory screen 350 may also include other program guide display screenelements, such as selectable advertisements, service provider logos,brand logos, advertisement banners, etc. If desired, directory screen350 may be displayed as an overlay and any of the overlays describedherein may be presented as display screens. Such display screens may beeither full screen display screens or partial screen display screens.Partial screen display screens may contain a reduced-size video window(e.g., for displaying the current television channel).

In another suitable approach, the program guide may display a directorymenu when the user, for example, presses a “DIR” key on remote control40 or selects a “Directory” feature from main menu 102. An illustrativedirectory menu screen 370 is shown in FIG. 18 e. Directory menu screen370 may provide the user with an opportunity to view directories ofrecorded programs, such as that shown in FIG. 18 d, but sorted invarious ways. When, for example, the user selects “By Time” feature 371,the program guide may display a directory of recorded programs assortedaccording to the date and time the programs were recorded. When, forexample, the user selects “Movies” feature 373, “Sports” feature 375,“Children” feature 377, or “Adult” feature 379, the program guide maydisplay a directory of recorded programs for movies, sports, children'sprograms, or adult programs, respectively. The listed categories may bepredetermined or based on movies a user has recorded. For example, if auser has only recorded movies, only “Movies” feature 373 may bedisplayed. If a user has recorded movies and children's programs,“Movies” feature 373 and “Children” feature 377 may be displayed.

The program guide may also provide the user with an opportunity to viewa directory of programs that the user has selected for recording by amedia server but that have not yet been recorded. FIG. 18 f shows anillustrative pending program directory screen 390 that the program guidemay display when, for example, the user selects “Pending Selections”feature 381 from directory menu screen 370.

The information displayed in the listings screens of FIGS. 11 a, 11 b,11 c, 12 a, and 12 b (FIGS. 18 a and 18 b), in overlay 320, or indirectory screens 350 or 390 (FIGS. 18 d and 18 f), may be obtained bythe program guide using any suitable approach. For example, a copy ofuser directory 59 having all of the displayed information may be storedby the program guide in memory 49. In still another suitable approach, acopy of user directory 59 may be maintained by the program guide thatincludes all program guide data related to the recorded program (e.g.,program listings information, Internet links, software, etc.), while acopy of user directory 59 having a small subset of the total programguide data available for the program (e.g., a program identifier andpointer) is maintained by remote media server 24 or local media server29. In still another suitable approach, the program guide may maintainuser directory 59 including the program guide data for the programs inthe directory. Alternatively, a smaller directory may be maintainedhaving only program identifiers, for example, and the program guide mayobtain program guide data from a continuously provided program guidedata stream from program guide distribution facility 16 or from programguide server 25 based on the identifier. In still another suitableapproach, user directory 59 may be totally maintained by remote mediaserver 24 or local media server 29 and made available to the programguide on demand. These various approaches are only illustrative and anysuitable approach for maintaining user directories and providing userswith access to them may be used if desired.

Once the user has selected for playback a program recorded on remotemedia server 24, the program guide may indicate to the user a charge forplaying back the program and prompt the user to confirm the playback.FIG. 19 shows an illustrative overlay 1901 in which such a charge isindicated and in which the user is prompted to confirm the playback. Thecharge displayed in overlay 1901 may be determined using any suitableapproach. Users may be charged a flat rate per-playback. Alternatively,users may be charged based on how long a selected program is. In anothersuitable approach, users may subscribe to a service in which users arepermitted unlimited playback time for a flat fee paid on a periodicbasis (e.g., monthly). In still another suitable approach, users may becharged a flat rate for a predetermined amount of playing back programs.The charge may be provided by program guide distribution equipment 16 tobilling system 199 for billing the user or otherwise adjusting theuser's account.

Once the user has selected a listing and indicated a desire that itsassociated program be played back (and if necessary confirmed theplayback), the program guide may issue a play back request to remotemedia server 24 or local media server 29. If desired, the program may beplayed back without commercials. The program guide may, for example,provide the user with the opportunity to set a “skip commercials” optionfrom a set-up screen. Alternatively, the user may fast-forward throughcommercials.

If desired, the program guide may instead issue a retrieval request toremote media server 24. In contrast to a play back request that directsremote media server 24 to both retrieve and play back the requestedprogram, a retrieval request need not involve immediate play back.Rather, the requested program may be retrieved from storage 15 andprovided to user television equipment 22. As used herein, “retrievalrequest” is intended to mean any command, request, message, remoteprocedure call, object based communication or any other type ofinterprocess or interobject based communication whereby the programguide may communicate information to the remote media server 24 or localmedia server 29 specifying which program the user wishes to retrieve.The retrieved program may then be stored in memory 44 (FIG. 6), digitalstorage device 31 (FIG. 6), secondary storage device 32 (FIG. 6) or onlocal media server 29 (FIG. 6). When the user wishes to view the programthat has been retrieved and locally stored, user television equipment 20may be directed to play back the program. If the retrieved program isstored on local media server 29, the user television equipment canretrieve it and then play it or may request that local media server 29play it back directly.

The program guide may provide users with the opportunity to viewadditional information for programs recorded by remote media server 24or local media server 29. FIG. 20 shows an illustrative full informationscreen 161 that may be displayed when a user indicates a desire to viewinformation for a program that has been recorded by remote media server24 or local media server 29. Full information screen 161 may bedisplayed, for example, when the user presses an “INFO” key on remotecontrol 40 after highlighting a program listing in a directory or otherlist of recorded programs.

Full information screen 161 may include information window 162, in whicha brief description of the recorded program may be displayed. Theinformation displayed in information window 162 may have been stored byremote media server 24 or local media server 29 when the program wasrecorded, may have been stored by the program guide when the program wasrecorded, may be retrieved by the program guide when full informationscreen 161 is displayed, or may be obtained by the program guide usingany other suitable approach.

The program guide may provide users with the opportunity to playprograms on demand that users have previously recorded on remote mediaserver 24 or local media server 29. Remote media server 24 or localmedia server 29 may play programs on-demand in response to playbackrequests generated by the program guide. As used herein, “playbackrequest” is intended to mean any command, request, message, remoteprocedure call, object based communication, or any other type ofinterprocess or inter-object based communication whereby the programguide may communicate information to a media server specifying whichprogram the user wishes to play back. The program guide may generateplayback requests when a user indicates a desire to view a program thathas been recorded. The user may indicate a desire to view a program thathas been recorded by, for example, highlighting a listing in a directoryor list and pressing a “PLAY” key on remote control 40.

When the user indicates a desire to view a program that has beenrecorded, the program guide generates a playback request that istransmitted by communications device 51 to remote media server 24 orlocal media server 29 via communications path 20 or 31. The playbackrequest may include for example, an identifier for the program that theuser wishes to play back, an identifier for the user, etc. The playbackrequest may include a pointer to a media directory on storage 15 if, forexample, the program guide maintains a user directory 59 or a copy of auser directory 59. Remote media server 24 retrieves the requestedprogram from storage 15 and provides it to distribution equipment 21 fordistribution as a suitable video signal (e.g., NTSC video, MPEG-2,etc.). Local media server 29 may retrieve the requested program fromstorage 37 and provide it to user television equipment 22 as a suitablevideo signal (e.g., NTSC video, MPEG-2, etc.). If the requested programis to be played back, distribution equipment 21 distributes the programin real time. If the requested program is merely being retrieved,distribution equipment 21 may transfer the program to user televisionequipment 21 in a compressed format (e.g., as a compressed video file).

Remote media server 24 may also retrieve any recorded program guide dataassociated with a recorded program and may provide the retrieved data todistribution equipment 21 or program guide server 25 for access by theprogram guide. Alternatively, remote media server 24 may provide theretrieved data directly to the program guide. Local media server 29 mayprovide the data to user television equipment 22 via communications path29. The program guide may access the retrieved program guide data andmay present it to the user so that the user may interact with the dataduring playback just as when the program was originally aired. If, forexample, associated program data is computer software that the usercould have accessed when the program was originally aired, the softwaremay be downloaded by the program guide in response to an indication fromthe user that the user desires to access the software.

The software may be stored on, for example, digital storage device 49,so that the user can access the software during playback. Such softwaremay be, for example, an interactive television application, such as ashopping application that allows the user to place orders for goodsoffered during the program.

Another example of program guide data that may be stored is an Internetlink that is associated with a recorded program. The link may beretrieved by remote media server 24 or local media server 29 anddownloaded by the program guide when the user plays back the program.The program guide may display the link in a program guide display screenor overlay. Internet links may, for example, be displayed in an overlaythat is displayed on top of the program during playback. The programguide may provide the user with the opportunity to select the Internetlink and thereby direct the program guide to launch a web browser.

The program guide may provide a user with an opportunity to parentallycontrol programs and program guide data. The program guide may, forexample, provide a user with an opportunity to set a parental controlcode and parental control criteria (e.g., rating, title, channel, etc.)When a user indicates a desire to record a program on or play back aprogram from remote media server 24 or local media server 29, theprogram guide may compare the characteristics of the program (e.g., itsrating, title, channel, etc.) stored, for example, in a user directory,with the parental control criteria. If the program does not meet thecriteria (e.g., its rating is too mature), the program guide may promptthe user for the parental control code. The program guide may allow theuser to record or playback the program only when the proper parentalcontrol code is entered. FIG. 21 shows an illustrative overlay 2111 thatthe program guide may display over a television channel or program guidedisplay screen to prompt the user for parental control code. FIG. 21shows overlay 2111 displayed over a television channel which has had anobjectionable program blacked out by the program guide.

The program guide may provide the user with VCR like control of recordedprograms. Remote control 40 may have keys that resemble the buttons on atypical analog videocassette recorder. In another suitable approach,user input device 46 (FIG. 9) may have a keyboard with keys mapped toVCR like functions. Alternatively, the user may select on-screenfeatures that correspond to such functions. Any other suitable approachfor providing the user with VCR like control of recorded programs may beused. The user may, for example, pause, stop, rewind, fast-forward, orplay the program by indicating a desire to do so (e.g., by pressingsuitable keys on remote control 40).

These features may be performed locally by the program guide, forexample, by downloading on-demand programming in part or in whole todigital storage device 49 (FIG. 9). Alternatively, the program guide maygenerate appropriate requests (e.g., fast-forward, rewind, skip, andpause requests) in real time in response to user input. Such requestsmay be transmitted to remote media server 24 or local media server 29for processing. As used herein, requests for VCR-like control ofrecorded programs are intended to mean any command, request, message,remote procedure call, object based communication, or any other type ofinterprocess or inter-object based communication whereby the programguide may communicate information to the media server specifying whichprogram the user wishes to control.

FIG. 22 shows an illustrative overlay 2201 for providing users withVCR-like control of programs that have been recorded on remote mediaserver 24 or local media server 29. When a user indicates a desire tostop, play, fast-forward, rewind, or pause a video by, for example,pressing suitable keys on remote control 40, the program guide mayindicate which key has been pressed. For example, if the userfast-forwards a video, the program guide may highlight the “FASTFORWARD” button portion of overlay 2201.

The program guide may also provide users with an opportunity toreal-time cache programs. This feature may allow users to view portionsof a program that the user would otherwise not be able to view when, forexample, the user must momentarily leave the room in which the programis being shown. A user may indicate a desire to record a program onremote media server 24 when viewing is interrupted by, for example,pressing a “PAUSE” key on remote control 40. The program guide mayrespond for example, by indicating to the user a charge for caching theprogram and prompting the user to confirm the recording as shown in FIG.23. Once the user has confirmed the record or if there is no charge forthe record, the program guide may issue a record request to remote mediaserver 24. Remote media server 24 may begin recording the program atthat point and until the program is finished. When the interruption isover (e.g., the user returns to his or her seat), the user may indicatea desire to continue watching the program. Remote media server 24 mayplay back the cached copy of the program while continuing to cache theremaining portion of the aired program until the aired program is over.The user may catch up to the aired program during commercials or otherprogress of little interest by, for example, fast-forwarding.

When a user indicates a desire to “rewind” a real-time cached program tothe point before which the user began recording, remote media server 24may check storage 15 to see if any other users have recorded the programor whether the program is otherwise still available. If there are noother copies of the program available, the user may be restricted torewinding only to the point at which the user began recording. Ifdesired, remote media server may automatically cache or otherwisetemporarily record all current programs, programs being viewed, orprograms for certain subscribers thereby providing users or subscriberswith the ability to have full VCR-like control of such cached orrecorded programs. Local media server 29 may cache programs in a similarmanner if desired.

The program guide may also provide users with an opportunity to managewhat is stored on remote media server 24 and local media server 29. Theprogram guide may, for example, provide users with an opportunity todelete programs that are no longer desired. The user may indicate adesire to delete a program by, for example, highlighting a listing for arecorded program and pressing a “DEL” key on remote control 40, byselecting an on-screen feature of a program guide display screen such asfeature 159 of full information screen 161 (FIG. 20), or using any othersuitable approach. When the user indicates a desire to delete a recordedprogram, the program guide may generate a delete request that istransmitted to remote media server 24 or local media server 29 bycommunications device 51. Delete requests may be any suitable request,message, object-based communication, remote procedure call, etc.

After receiving a delete request, remote media server 24 (for users fromwithin the same or different households) or local media server 29 (forusers from within the same household) may determine whether more thanone user has requested a copy of the selected program. If only one userhas requested that the program be recorded, remote media server 24 mayissue a delete command to the storage device that stores the programselected for deletion. The appropriate storage device deletes theselected program from its media store 63 (FIG. 4) and media directories61 and user directory 59 are updated accordingly. If more than one userhas requested that the program be recorded, remote media server 24 maydelete the entry in user directory 59 for that program. If the programguide maintains a user directory 59, the program guide may delete theentry. Local media servers may delete programs in a similar manner.

Remote media server 24 and local media server 29 may automaticallydelete programs if desired. This may be done, for example, when aprogram is not accessed by a user for a predetermined period of time.Remote media server 24 and local media server 29 may also automaticallydelete portions of a program that is being real-time cached. Forexample, real time caching may be limited to ten minutes of recording,thereby limiting the amount of recording a user may rewind. Remote mediaserver 24 may, for example, move a program to physical media that issent to the user. Another suitable approach involves deleting programsafter all users have watched them. Users may be charged a fee forrecording programs on server 29 or server 24. If users are charged afee, users may be charged per unit of storage consumed, per programrecorded, per playback, or may be charged a flat fee, etc.

The program guide may provide a user with an opportunity to set upvarious settings related to how programs are recorded on or played backfrom remote media server 24 or local media server 29. The program guidemay display a setup screen when the user indicates a desire to set upthese features by, for example, selecting a “Setup” feature from mainmenu 102. An illustrative setup screen 2401 is shown in FIG. 24.

As shown in FIG. 24, the user may set the audio language, audio format,and video format that user television equipment 22 may play programs in.The user may change settings by, for example, arrowing right or left.The user may change between settings by, for example, arrowing up ordown. Suitable audio formats may include mono, stereo, surround sound,etc. Suitable video formats may include regular, high definitiontelevision (HDTV), wide screen, narrow screen, etc. The user may alsoselect the language in which programming audio is played if available ona digital audio track.

The program guide may include the selected language, audio format, andvideo format in record requests. Remote media server 24 or local mediaserver 29 may record programs with only those indicated formats andlanguages if they are available as part of program data associated withthe programs. Alternatively, the program guide may include the selectedlanguage, audio format, and video format in playback requests. Remotemedia server 24 or local media server 29 may record programs with allavailable video and audio formats and languages and may playbackprograms only in the selected formats and language (or any defaultformat or language) when requested.

The program guide may also allow the user to define “super-programs.”Super-programs are sequences of programs or program segments that theguide will play back sequentially in a specified order. Recordingsuper-programs on digital storage using interactive television programguides is described, for example, in the above-mentioned Hassell et al.U.S. patent application Ser. No. 09/157,256. The user may indicate adesire to access the super-program feature of the program guide by, forexample, entering appropriate commands with user input device 46. Ifuser input device 46 is a remote control such as remote control 40 ofFIG. 8, the user may, for example, use a “SUPER” key on remote control40 after highlighting a program listing in directory listing screen 350(FIG. 18 d), or may select an on-screen “Super-Program” option from aprogram guide display screen or from a list of on-screen options thatare provided by the program guide when a program listing is selected.

The program guide may also provide the user with the ability to namesuper-programs and to store them on remote media server 24, local mediaserver 29, or optional digital storage device 49. Entries for the namedsuper-programs may be kept in user directories maintained by remotemedia server 24, local media server 29, or the program guide and may bedisplayed in any suitable screen that lists directory entries forprograms (e.g., directory screen 350 of FIG. 18 d). Alternatively, theprogram guide may list super-program listings in a super-programdirectory screen (i.e., a directory screen dedicated to listingsuper-program listings). For example, when directory screen 350 isdisplayed by the program guide, the program guide may provide the userwith an opportunity to select a named super-program.

When the user selects a named super-program, the program guide maygenerate a super-program screen for display on display device 45. Theprogram guide may also provide the user with an on-screen list ofoptions for performing super-program functions (e.g., playing,transferring or editing the super-program). When the user indicates adesire to define a super-program, the program guide generates asuper-program screen for display on display device 45. An illustrativesuper-program screen 130 is shown in FIGS. 25 a and 25 b.

Super-program screen 130 may be organized into three areas. Area 131displays a directory of programs recorded by remote media server 24,local media server 29, digital storage device 49, or any combinationthereof. Area 132 indicates the super-program sequence. Video feedbackarea 137 displays portions of programs included in the super-program.The time remaining for recording may be displayed, for example, toindicate to the user how much time is left on remote media server 24 orlocal media server 29 for recording in approaches where there are limitson user recording.

The three areas of super-program screen 130 may be presented only whenneeded. For example, area 131 may be displayed only when the programguide is providing the user with an opportunity to select a recordedprogram. Once the user has selected a program, area 131 may be removedand area 132 may be displayed in its place, while the program guide isproviding the user with an opportunity to define a program segment forinclusion in the super-program. Video feedback area 137 may be displayedonly in response to an indication by the user to the program guide todisplay a program segment. Thus, it may not be necessary for all threeareas to be displayed at once.

To define a super-program, the user indicates which programs are to beincluded in the super-program sequence. The program guide may also givethe user the ability to include in the current super-program otherpreviously defined super-programs. Area 131 lists the recorded programsand super-programs. If the user interface is a remote control such asremote control 40 of FIG. 8, the user may use up and down arrow keys toselect a desired program or super-program. The user may also accessother information associated with the entry by using an “INFO” key onremote control 40, or by selecting a suitable option from an on-screenoptions list provided by the program guide. The program guide maygenerate a full information screen such as full information screen 161of FIG. 20, containing information associated with the selected programwhen the “INFO” key is pressed.

Whenever the user selects a program, the program guide places theselected entry in the super-program sequence at a defined point in thesequence (e.g., at the end of the sequence). As shown in FIG. 25 a, forexample, a first segment entry, “Braveheart,” has already been selectedby the user. The user is currently selecting the second segment entry,“Kiss The Girls.” The segment entries are listed in second area 132. Theuser then has the option of defining the play segment of the program tobe played. Indicators 135 indicate the currently defined play segment.

If the user wishes to define a play segment, the user may do so, forexample, by using markers 136 (FIG. 25 b) to define the segment bymoving the markers to the desired time within a program. As shown inFIG. 25 b, the user uses highlight region 134 (positioned by the programguide over one of the markers) to move markers 136 to define the playsegment. The program guide may display the portion of the programcorresponding to markers 136 in video feedback area 137 as markers 136are individually positioned. The program guide may, for example issueplayback requests to remote media server 24 or local media server 29that include a user pointer to the desired position in the program oroff-sets from the current position. Alternatively, the program guide maysend suitable requests to remote media server 24 or local media server29 to adjust one or more user pointers on remote media server 24 orlocal media server 29. When the user is finished defining the playsegment, the user may press an “OK” key on remote control 40. Inresponse, the program guide positions highlight region 134 (FIG. 25 a)in first area 131 to allow the user to define another entry in thesuper-program sequence.

When the user has finished defining the super-program, the user mayissue appropriate commands with user input device 46. If user inputdevice 46 is a remote control such as remote control 40 of FIG. 8, theuser may use a “PLAY” key to finish editing the super-program and playthe super-program. The user may also select an on-screen “Play” featurefrom a list of on-screen options provided by the program guide. The usermay play the super-program at any time after the super-program has beendefined.

When the user presses “PLAY”, the program guide may issue a playbackrequest to remote media server 24 or local media server 29, or may issuethe appropriate instructions to digital storage device 49 to read theprograms and associated program data according to the definedsuper-program sequence. The playback requests may, for example, containpointers to the positions in the programs that are defined by thesuper-program sequence. The program guide then instructs user televisionequipment 22 to provide the programs in the super program and anyassociated data in the appropriate format for display on display device45 and for use by the user as if the user were viewing the programs whenthey were originally aired. If display device 45 is a television, forexample, user television equipment 22 may convert the programs fromtheir digital format to appropriate RF or demodulated video signals fordisplay on monitor 45.

The user may store the super-program for playback at a later time. Theuser may indicate a desire to postpone playback by, for example, issuingappropriate commands with user input device 46. If user input device 46is a remote control such as remote control 40 of FIG. 8, the user mayuse an “EXIT” key on remote control 40 or select an on-screen “Exit”option. The program guide may respond to an indication to postponeplayback by storing the playback sequence (either in memory 63, ondigital storage device 49, remote media server 24 or local media server29. The user may later access the super-program by, for example,selecting the super-program while in directory screen 350. The programguide may then generate a super-program screen with the previouslyentered selections and defined play-segments and provide the user withthe opportunity to add, edit or re-order the programs and programsegments. The user plays the super program by issuing a suitable command(e.g., pressing a “PLAY” key on remote control 40).

FIGS. 26-31 are illustrative flowcharts of steps involved in operatingthe system of the present invention. The steps shown in FIGS. 26-31 areillustrative and may be performed in any suitable order. Various stepsmay also be deleted if desired.

FIG. 26 is an flowchart of an illustrative overview of steps involved inrecording programs and program guide data on remote media server 24 orlocal media server 29. At step 2610, the program guide provides the userwith an opportunity to select a program for recording on remote mediaserver 24 or local media server 29. This may be accomplished by, forexample, providing a user with an opportunity to record a program whilewatching it, whether directly or in combination with a FLIP overlay.This may also be accomplished by providing a user with an opportunity toselect a program listing. Program listings may be presented by theprogram guide in various types of program listings screens, such asprogram listings by time screen 130 (FIG. 11 a), program listings bychannel screen 135 (FIG. 11 b), program listings by category screen(FIG. 11 c), in a Browse overlay or in any other suitable type ofprogram guide display screen. Alternatively, the user may access programlistings via the Internet such as in the arrangement of FIG. 2 e. Theuser may also record programs by pressing a “PAUSE” or “REWIND” key onremote control 46 while watching a program to cache the program in realtime.

Users may also select programs for recording by remote media server 24or local media server 29 by setting up search queries that define typesof programs the user wants to record. The user may, for example, defineboolean expressions that result in recording programs based on asuitable parameter or parameters. Suitable parameters may include anyprogram guide data associated with programs, such as program titles,actors within programs, program themes or categories, program ratings,text within program information fields, or any other suitable programguide data.

When the user selects or designates a program for recording, the programguide generates a record request (step 2620). This step may be performedconcurrently with step 2610, immediately after step 2610, or sometime inthe near future after step 2610 such as just prior to a programstarting. When a user indicates a desire to record a program grouping,the request may include a grouping identifier or the program identifiersof the constituent programs. In still another approach, the programguide may generate separate record requests for each program in thegrouping, repeating step 2620.

The one or more record requests are transmitted to the recording mediaserver at step 2640. Transmitting the record request may involve usingany suitable communications protocol stack. Record requests may betransmitted using, for example, TCP/IP, IPX/SPX, DOCSIS, or any othersuitable protocol or group of protocols. If users are charged forrecording, program guide distribution equipment 16 may provide billinginformation to billing system 199 (FIG. 1) at step 2650. The billinginformation may include the title of the program that was selected, itsidentifier, its length, the charge for the record, or any other suitableinformation. Billing system 199 may bill the requesting user or adjustthe user's account at steps 2655 and 2657, respectively.

At steps 2660 and 2680, the program and associated program guide dataare recorded on the recording media server, respectively. Steps 2660 and2680 may be performed in any suitable order and may be performedconcurrently if desired. Step 2660 may include recording programassociated data. Step 2680 may also be performed automatically by remotemedia server 24 or local media server 29 such as when automaticallyreal-time caching programs.

FIG. 27 is a somewhat more detailed flowchart of illustrative stepsinvolved in recording programs, program guide data, or any combinationthereof, on remote media server 24 or local media server 29 (e.g., steps2660 and 2680 of FIG. 26). At step 2810, record requests are received byremote media server 24 or local media server 29. The record requests arequeued in a job queue at step 2820. At step 2840, similar requests areconsolidated. The consolidated and unconsolidated requests are queued atstep 2860.

The job queue may be examined at step 2880 to determine if enough usershave requested each program for recording. Job queue entries may beexamined, for example, 15 minutes before a program is scheduled to air.If too few users requested a given program, the users who requested theprogram may be notified (step 2890) and the program guide may record theprogram locally by using, for example, local media server 29, optionaldigital storage device 49 (FIG. 9), or optional secondary storage device47 (FIG. 9) (step 2900). Alternatively, programs may be recorded onphysical media and sent to users (step 2905).

At step 2910, suitable equipment at program guide distribution facility16 (e.g., distribution equipment 21) tunes to the channel (analog ordigital) on which the requested program is carried. This may be done,for example, in response to a request by remote media server 24. At step2920, the program is recorded in analog or digital format on storage inremote media server 24 or local media server 29.

User directories may be updated at step 2940. User directories may bemaintained by remote media server 24, local media server 29, by theprogram guide, or any combination thereof. User directories that aremaintained by remote media server 24 or local media server 29 may beupdated at step 2945. Local media server 29 may maintain a userdirectory for only those programs that it records on storage 37 (FIG.7), or may maintain a copy of the user directories maintained by remotemedia server 24 for one or more users of a local media server 29.

The program guide may maintain user directories for one or more userslocally in memory 63 (FIG. 9), on optional digital storage device 49, oron optional secondary storage device 47 (step 2950). The userdirectories maintained by the program guide may reflect the programsstored by remote media server 24, local media server 29, or both, andmay also be maintained by the program guide on local media server 29 ifdesired. It may be desirable for the program guide to exclusivelymaintain user directories. In another suitable approach, however, theprogram guide may maintain copies of user directories that aremaintained by remote media server 24 and local media server 29.Alternatively, user directories may be maintained exclusively by remotemedia server 24 or local media server 29 and provided to the programguide on-demand.

FIG. 28 is a flowchart of an illustrative overview of steps involved inplaying back programs, program guide data, or any combination thereof,from remote media server 24 or local media server 29. At step 2700, theprogram guide provides the user with an opportunity to select therecorded program for playback from remote media server 24 or local mediaserver 29. This may be accomplished by, for example, presenting the userwith a directory of recorded programs. The directory may be overlaid ontop of a television program that the user is watching (e.g., as withoverlay 320 of FIG. 18 a), may be overlaid on top of a program guidedisplay screen (e.g., as with overlay 320 of FIGS. 18 b and 18 c), maybe displayed within a dedicated program guide display screen (e.g., aswith directory screen 350 of FIG. 18 d), or may be displayed within aweb page such as in the arrangement of FIG. 2 e. Alternatively, usersmay be presented with program listings for recorded programs or programsselected for recording in regular program listings screens such as shownin FIGS. 11 a, 11 b and 11 c.

The user may select or designate a program for playback by, for example,selecting the listing for the program from a list or other program guidedisplay screen. After the user designates a program for playback (e.g.,by selecting a listing and pressing a “PLAY” key on remote control 40),the program guide generates a playback request that is transmitted toremote media server 24 or local media server 29 (steps 2720 and 2740).Playback requests may be transmitted using, for example, TCP/IP,IPX/SPX, DOCSIS, or any other suitable protocol or protocols. If usersare charged for playing back programs, program guide distributionequipment 16 may provide billing information to billing system 199(FIG. 1) at step 2750. The billing information may include the title ofthe program that was selected, its identifier, its length, the chargefor the play back, or any other suitable information. Billing system 199may bill the requesting user or adjust the user's account at steps 2755and 2757, respectively. At steps 2760 and 2780, the program andassociated program guide data are played back from the recording mediaserver and presented to the user (e.g., on the user's television 36 ofFIG. 7 or PC 231 of FIG. 2 e).

FIG. 29 is a somewhat more detailed flowchart of illustrative stepsinvolved in playing back programs from remote media server 24 and localmedia server 29. At step 2960, a portion of a program selected forplayback is cached by remote media server 24 or local media server 29.It may be desirable, for example, to cache the entire program if systemresources permit. Step 2960 may also include step 2965 at which remotemedia server 24 or local media server 29 determines whether the portionof the program has already been cached (i.e., for another user). If so,an additional copy may not be needed.

At step 2980, remote media server 24 or local media server 29distributes the program to user television equipment 22 for playback.The programs and their associated program guide data are played back onuser television equipment 22 or PC 231 at step 2990. Programs andprogram guide data may be distributed and played back using any suitableapproach. For example, programs and program guide data may be playedback by media server 24 and distributed to user television equipment 22for viewing in real-time. If programs and program guide data aredistributed as digital data stream, user television equipment 22 maydecode the data stream in real time. Such on-demand programs and programguide data may be distributed and played back according to preferencesthat were set up by the user. In a second suitable approach, programsand program guide data are distributed as one or more digital files oras a digital data stream, and are stored by user television equipment 22for playback. In a third suitable approach, programs and program guidedata are played back by remote media server 24 and distributed accordingto a schedule over an analog or digital channel using a suitablenear-video-on-demand (NVOD) approach. In still another suitableapproach, remote media server 24 may record programs and program guidedata on physical media, such as a DVD or videocassette, that are sent tothe user. Any combination of these approaches, or any other suitableapproach, may also be used.

At step 3000, the program guide provides the user with VCR-like controlof the program. The program guide may display an overlay, such asoverlay 141 of FIG. 22, to indicate to a user when the user has stopped,paused, rewound, or fast-forwarded the program. At step 3010, remotemedia server 24 or local media server 29 may adjust the user pointerwithin a program portion, or may move the pointer to the next programportion. User pointers may be advanced, for example, as a program isplayed back normally, or when a program is being controlled such as whenit is being fast-forwarded. At a suitable point before a user pointer isadjusted beyond the beginning or end of a program portion, the previousor next program portion may be cached (step 2960). Program guide datamay be presented and represented so that it tracks the program beingcontrolled by the user using the interactive television program guide.

FIG. 30 is a flowchart of illustrative steps involved in providing theuser with access to real-time cached copies of programs. At step 3020,remote media server 24 or local media server 29 caches a program whileit is being aired. Step 3020 may be performed by remote media server 24or local media server 29 automatically, or may be performed when a userindicates a desire to cache a program in real-time (e.g., by pressing a“PAUSE” key on remote control 40 while watching a program). At step3040, the program is played on user television equipment 22 while theuser is provided with VCR-like control of the program. When the userindicates a desire to perform a VCR-like function, the program guide mayissue a request to remote media server 24 or local media server 29 toadjust the user pointer to the user's viewing position in the cachedcopy. When the user is finished viewing the cached copy, such as whenthe program is over, when the user fast-forwards to the end, or when theuser presses the stop key, the program guide may issue a delete requestto remote media server 24 or local media server 29 to delete it, or itmay be deleted automatically.

Steps involved in providing the super-program feature of the presentinvention are set forth in FIG. 31. The program guide records programsand associated program guide data on remote media server 24, local mediaserver 29, or digital storage device 49 at step 3110. At step 3120, thesuper-program sequence is defined. This may include displaying asuper-program screen, such as super-program screen 130 of FIGS. 25 a and25 b, on display device 45 as set forth in step 3140. Recorded programsare listed by the program guide on display device 45 at step 3160, andthe program guide provides a user with an opportunity to select thelisted programs at step 3180. At step 3200, the program guide providesthe user with an opportunity to define play segments. The program guidemay display a play segment indicator and marker for defining the playsegment, as indicated by step 3220. At step 3240, the program guidedisplays a video feedback area on display device 45. The program guidedisplays the programs, play segments, and associated program data whichare part of the super-program sequence on display device 45 according tothe super-program sequence at step 3260.

The foregoing is merely illustrative of the principles of this inventionand various modifications can be made by those skilled in the artwithout departing from the scope and spirit of the invention.

1-50. (canceled)
 51. A method for providing users at one or more userequipment devices with access to a program, the method comprising:storing the program at a media server; maintaining a first playbackpointer for a first interactive program guide, wherein the firstplayback pointer points to a first portion of the stored program;maintaining a second playback pointer for a second interactive programguide, wherein the second playback pointer points to a second portion ofthe stored program; receiving a first playback request from the firstinteractive program guide implemented on a first user equipment to playback the program; modifying the first playback pointer at the mediaserver and distributing a portion of the stored program, correspondingto the first playback pointer, to the first user equipment in responseto receiving the first playback request; receiving a second playbackrequest from the second interactive program guide implemented on asecond user equipment to play back the program; and modifying the secondplayback pointer at the media server and distributing a portion of thestored program, corresponding to the second playback pointer, to thesecond user equipment in response to receiving the second playbackrequest.
 52. The method of claim 51, further comprising: caching all ofthe stored program, wherein each of the first playback pointer and thesecond playback pointer points to the cached program.
 53. The method ofclaim 51, further comprising: caching the first portion of the storedprogram, wherein the first playback pointer points to the cached firstportion; and caching the second portion of the stored program, whereinthe second playback pointer points to the cached second portion.
 54. Themethod of claim 53 wherein each of the cached first portion and thecached second portion corresponds to non-overlapping portions of thestored program.
 55. The method of claim 53 wherein modifying the firstplayback pointer further comprises: modifying the first playback pointerto point to the cached second portion.
 56. he method of claim 53 furthercomprising: determining that the first playback pointer is within afixed playback time of a terminus of the cached first portion; inresponse to the determining: retrieving a third portion of the storedprogram, wherein the third portion corresponds to a portion of theprogram proximate to the cached first portion; pre-decoding the thirdportion of the stored program; and caching the retrieved and decodedthird portion of the stored program.
 57. The method of claim 51 furthercomprising: receiving a record request from an interactive programguide; and storing the program at the media server in response toreceiving the record request.
 58. The method of claim 57 furthercomprising: storing software associated with the program on the mediaserver in response to receiving the record request.
 59. The method ofclaim 58 further comprising: enabling the user to interact with thestored software when playing back the program.
 60. The method of claim51 further comprising: receiving a delete request from the aninteractive program guide; and deleting the program from the mediaserver in response to receiving the delete request.
 61. A system forproviding users at one or more user equipment devices with access to aprogram, the system comprising: storage device; processing circuitryconfigured to:; store the program at a storage device of a media server;maintain a first playback pointer for a first interactive program guide,wherein the first playback pointer points to a first portion of thestored program; maintain a second playback pointer for a secondinteractive program guide, wherein the second playback pointer points toa second portion of the stored program; receive a first playback requestfrom the first interactive program guide implemented on a first userequipment to play back the program; modify the first playback pointer atthe media server and distributing a portion of the stored program,corresponding to the first playback pointer, to the first user equipmentin response to receiving the first playback request; receive a secondplayback request from the second interactive program guide implementedon a second user equipment to play back the program; and modify thesecond playback pointer at the media server and distributing a portionof the stored program, corresponding to the second playback pointer, tothe second user equipment in response to receiving the second playbackrequest.
 62. The system of claim 61, further comprising: memory; andwherein the processing circuitry is further configured to: cache all ofthe stored program in the memory, wherein each of the first playbackpointer and the second playback pointer points to the cached program.63. The system of claim 61, further comprising: memory; and wherein theprocessing circuitry is further configured to: cache the first portionof the stored program in the memory, wherein the first playback pointerpoints to the cached first portion; and cache the second portion of thestored program in the memory, wherein the second playback pointer pointsto the cached second portion.
 64. The system of claim 63 wherein each ofthe cached first portion and the cached second portion corresponds tonon-overlapping portions of the stored program.
 65. The system of claim63 wherein the processing circuitry is further configured to: modify thefirst playback pointer to point to the cached second portion.
 66. Thesystem of claim 63 wherein the processing circuitry is furtherconfigured to: determine that the first playback pointer is within afixed playback time of a terminus of the cached first portion; inresponse to the determining: retrieve a third portion of the storedprogram, wherein the third portion corresponds to a portion of theprogram proximate to the cached first portion; pre-decode the thirdportion of the stored program; and cache the retrieved and decoded thirdportion of the stored program in the memory.
 67. The system of claim 61wherein the processing circuitry is further configured to: receive arecord request from an interactive program guide; and store the programat the storage device of the media server in response to receiving therecord request.
 68. The system of claim 67 wherein the processingcircuitry is further configured to: store software associated with theprogram on the storage device of the media server in response toreceiving the record request.
 69. The system of claim 68 wherein theprocessing circuitry is further configured to: enable the user tointeract with the stored software when playing back the program.
 70. Thesystem of claim 61 wherein the processing circuitry is furtherconfigured to: receive a delete request from the an interactive programguide; and delete the program from the storage device of the mediaserver in response to receiving the delete request.